#include <stdio.h>
#include <stdlib.h>
typedef struct  LS
{
    int data;
    struct LS  *next;
}LS;

void main()
{
    LS *stack=(LS*)malloc(sizeof(LS));
    // printf("%d",init_stack(&stack));
    // if(is_emphy(stack)==0)
    // {
    //     printf("emphy\n");
    // }
    int data;
    while(1)
    {
        scanf("%d",&data);
        if(data==9999)
        {
            break;
        }
        printf("%d",push_stack(stack,data));
    }
    while(0==pop_stack(stack,&data))
    {
        printf("%d\n",data);
        
    }
}
// int init_stack(LS **stack)
// {
//     if(stack==NULL)
//     {
//         return -1;
//     }
//     *stack=(LS*)malloc(sizeof(LS));
//     if(*stack=NULL)
//     {
//         return -1;
//     }
//     return 0;
// }
// int is_emphy(LS *stack)
// {
//     if(stack==NULL||stack->next==NULL)
//     {
//         return 0;
//     }
//     return -1;
// }
int push_stack(LS *stack,int data)
{
    if(stack==NULL)
    {
        printf("%d",__LINE__);
        return -1;
    }
    LS *p=(LS*)(sizeof(LS));
    if(p==NULL)
    {
        printf("%d",__LINE__);
        return -1;
    }
    p->data=data;

    p->next=stack->next;
    stack->next=p;
    return 0;
}
int pop_stack(LS *stack,int *data)
{
    if(stack==NULL||data==NULL||stack==NULL||stack->next==NULL)
    {
        return -1;
    }
    LS *p=stack->next;
    *data=p->data;
    stack->next=p->next;
    if(p!=NULL)
    {
        free(p);
        p=NULL;
    }
    return 0;

}
